package com.demo.sort;

import static com.demo.sort.SelectSort.selectSort;

/**
 * @Description: 二分查找, 这个查找的内容需要有顺序，不然不能用二分查找
 * @Author: xiangty
 * @Date: 2018-08-02
 */
public class BinarySearch {
    public static void main(String[] args) {
        //从小到大排序："1	6	8	12	25	36	48	53	54	56	61	92"
        int[] array = {92, 54, 61, 25, 48, 36, 1, 8, 6, 12, 53, 56};
        int key = 54;
        int result = binarySearch(array, key);
        System.out.println("排序后的位置：" + result);
    }

    public static int binarySearch(int[] param, int key) {
        //此方法是按从小到大排序：参考com.learnjava.demo.sort.SelectSort.selectSort;
        selectSort(param);
        System.out.println(param.toString());

        //二分的时候首位的位置
        int low = 0;
        //二分的时候最大位的位置
        int high = param.length - 1;

        while (high >= low) {
            //二分的时候中间的位置
            int mid = (low + high) / 2;
            if (key < param[mid]) {
                high = mid - 1;
            } else if (key == param[mid]) {
                return mid;
            } else {
                low = mid + 1;
            }
        }
        return -1;
    }


}
